package commEnv

import (
	"os"
	"strconv"
	"strings"
)

var (
	args    *appArgs
	Service *service
)

type service struct {
	WorkDir         string // 系统目录
	ServiceType     string // 服务类型
	ServiceName     string // 服务名称
	ModelType       string // 模块名称
	ModelName       string // 模块类型
	ApplicationName string // 程序名称
	AppPort         int    //端口号
}

func init() {
	args = &appArgs{}
	Service = &service{}

	// 从命令行读取参数
	args.initialize()

	// 初始化目录
	SetWorkPath(0)


}

func GetArg(key string) (interface{}, bool) {
	val, ok := args.params[key]
	return val, ok
}

// SetWorkPath 修正IDEA开发环节下工作路径为fox-edge
func SetWorkPath(level int) {
	wd, _ := os.Getwd()
	Service.WorkDir = wd

	// 检测：是否为开发环境模式，这时候可以重置工作目录
	envDev, ok := args.params["envDev"]
	if !ok || envDev != "true" {
		return
	}

	items := strings.Split(wd, "\\")

	suffix := ""
	for i := 0; i < level; i++ {
		suffix += "/" + items[len(items)-1-i]
	}

	Service.WorkDir = wd[0 : len(wd)-len(suffix)]
}

func SetAppPort(defaultPort int) {
	Service.AppPort = defaultPort

	// 从命令行参数中，配置端口
	str, ok := GetArg("appPort")
	if ok {
		port, err := strconv.ParseInt(str.(string), 10, 32)
		if err == nil {
			Service.AppPort = int(port)
		}
	}
}
